
/*
 *
 * 名称：九宫
 * 功能：九宫运转逻辑
 * 作者：清河张
 * 时间：2025.05.15
 *
 */

#ifndef GONG9_H
#define GONG9_H

#include "base/gua8.h"
#include "base/zhi12.h"

struct XZGONG
{
    const int _id : 5;//宫号，洛书
    const int _xu : 5;//宫序
    const int _gua1 : 5;//先天八卦
    const int _gua2 : 5;//后天八卦
    const int _ht1 : 5;//河图数
    const int _ht2 : 5;//河图数
    const WUXING5::EWUXING _wx : 4;//五行
    const int _resv : 30;//备用，对齐

    int gid() const;

    int xshu() const;//取小数
    int dshu() const;//取大数

    WUXING5 wx5() const;//五行

    int izhi1() const;//地支一
    int izhi2() const;//地支二

    ZHI12 zhi1() const;//地支一
    ZHI12 zhi2() const;//地支二
    int jd(const XZGONG* g) const;//角度
    int jb(const XZGONG* g) const;//脚步

    GUA8 gua1() const;//先天卦
    GUA8 gua2() const;//后天卦

    bool zhg_hu() const;//是否中宫
    int fei(int jb);//飞宫
    int zhuan(int jd);//转宫
    int duimian();//对宫
    int xiantian();//找先天八卦，飘宫
    int houtian();//找后天八卦，挖宫

};

int gong9_zhi_gid(int z);//找地支
XZGONG* gong9_zhi_gong(int z);//找地支

int gong9_zhg_gid();//中宫
XZGONG* gong9_zhg_gong();//中宫

int gong9_xu_gid(int x);//序号找宫
XZGONG* gong9_xu_gong(int x);//序号找宫

int gong9_gua1_gid(int g);//先天卦找宫
XZGONG* gong9_gua1_gong(int g);//先天卦找宫

int gong9_gua2_gid(int g);//后天卦找宫
XZGONG* gong9_gua2_gong(int g);//后天卦找宫

XZGONG* gong9_gid_gong(int gid);//宫全息


#endif // GONG9_H
